﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
//using Oracle.DataAccess.Client;
using System.Configuration;
//using System.Data.Entity.Infrastructure;
using System.ComponentModel.DataAnnotations;
using DslamPort.Models;
using System.Collections.ObjectModel;
using System.Web.Mvc;
using System.Data.OracleClient;
using System.IO;
using System.Text.RegularExpressions;
using System.Data;
namespace DslamPort.Models
{
    public class DslamModel
    {
        public string id { get; set; }
        //[Required(ErrorMessage = "System ID không được để trống!")]
        public string system_id { get; set; }
        [Required(ErrorMessage = "Tên DSLAM không được để trống!")]
        public string name { get; set; }
        [Required(ErrorMessage = "Đơn vị không được để trống!")]
        public string quan_huyen_id { get; set; }
        public SelectList donvi { get; set; }
        [Required(ErrorMessage = "Loại Dslam không được để trống!")]
        public string dslam_type_id { get; set; }
        public SelectList dslam_type { get; set; }
        public string ten { get; set; }
        public string dslam_type_name { get; set; }
        public string dslam_option { get; set; }
        public string status { get; set; }
        // [Required(ErrorMessage = "Slot không được để trống!")]
        public string slot_dslam { get; set; }
        [Required(ErrorMessage = "Ip không được để trống!")]
        public string ip { get; set; }
        [Required(ErrorMessage = "Xã phường không được để trống!")]
        public string xa_phuong_id { get; set; }
        public string ttlienhe { get; set; }
        public string ghichu { get; set; }
        [Required(ErrorMessage = "Tổ dân phố  không được để trống!")]
        public string todanpho_id { get; set; }
        public string Vlan { get; set; }
        public static List<DslamModel> getDslam(int loai, string str = "")
        {
            List<DslamModel> Dslam_ = new List<DslamModel>();
            var odr = BaseClass.Lib_GetDataReader("SELECT a.id,a.vlan,a.system_id,a.name,a.status,a.slot_dslam,a.IP,a.xa_phuong_id,a.todanpho_id,a.ghichu,a.ttlienhe,b.*,c.quan_huyen_id madonvi,c.ten ten FROM dslam a,dslam_type_info b,quan_huyen c  where a.dslam_type_id=b.dslam_type_id and a.quan_huyen_id=c.quan_huyen_id and a.loai=" + loai + "  " + str);
            foreach (DataRow item in odr.Rows)
            {
                Dslam_.Add(new DslamModel
                {
                    id = item["id"].ToString(),
                    system_id = item["system_id"].ToString(),
                    name = item["name"].ToString(),
                    status = item["status"].ToString(),
                    dslam_type_id = item["dslam_type_id"].ToString(),
                    quan_huyen_id = item["madonvi"].ToString(),
                    dslam_type_name = item["dslam_type_name"].ToString(),
                    dslam_option = item["dslam_option"].ToString(),
                    ten = item["ten"].ToString(),
                    slot_dslam = item["slot_dslam"].ToString(),
                    ip = item["ip"].ToString(),
                    xa_phuong_id = item["xa_phuong_id"].ToString(),
                    todanpho_id = item["todanpho_id"].ToString(),
                    ghichu = item["ghichu"].ToString(),
                    ttlienhe = item["ttlienhe"].ToString(),
                    Vlan = item["vlan"].ToString()
                });
            }
            
            BaseClass.conn_global.Close();
            return Dslam_;
        }
        public List<DslamModel> getDslamByDonvi(string quan_huyen_id, int loai)
        {
            List<DslamModel> Dslam_ = new List<DslamModel>();
            string sql = "select * from dslam a,xa_phuong b where a.xa_phuong_id=b.xa_phuong_id and a.quan_huyen_id=b.quan_huyen_id  and a.loai=" + loai + " and a.quan_huyen_id=" + quan_huyen_id + " order by name";
            var odr = BaseClass.Lib_GetDataReader(sql);
            foreach (DataRow item in odr.Rows)
            {
                Dslam_.Add(new DslamModel
                {
                    id = item["id"].ToString(),
                    system_id = item["system_id"].ToString(),
                    name = item["name"].ToString()
                });
            }
           
            BaseClass.conn_global.Close();
            return Dslam_;
        }
        public List<DslamModel> getDslamByDonvi2(string str, int loai)
        {
            List<DslamModel> Dslam_ = new List<DslamModel>();
            string sql = "select * from dslam a where  " + str + "and a.loai=" + loai + " order by name";
            var odr = BaseClass.Lib_GetDataReader(sql);
            foreach (DataRow item in odr.Rows)
            {
                Dslam_.Add(new DslamModel
                {
                    id = item["id"].ToString(),
                    system_id = item["system_id"].ToString(),
                    name = item["name"].ToString()
                });
            }
            
            BaseClass.conn_global.Close();
            return Dslam_;
        }
        public List<SelectListItem> getDslamJson(string quan_huyen_id, int loai, string Order = "name")
        {
            List<SelectListItem> list = new List<SelectListItem>();
            if (Convert.ToInt32(quan_huyen_id) >= 0)
            {
                string sql = "select ten_xp,name,system_id from dslam a,xa_phuong b where a.xa_phuong_id=b.xa_phuong_id and a.loai=" + loai + " and a.quan_huyen_id=" + Convert.ToInt32(quan_huyen_id) + " order by " + Order;
                var odr = BaseClass.Lib_GetDataReader(sql);
                foreach (DataRow item in odr.Rows)
                {
                    list.Add(new SelectListItem { Text = item[0].ToString() + " -- " + item[1].ToString(), Value = item[2].ToString() });
                }
            }
            return list;
        }
        public static bool KiemTraHopLeSlot(DslamModel dslam)
        {
            bool kq = true;
            //if (int.Parse(dslam.dslam_type_id)>3)//atm
            //{
            //    if(dslam.slot_dslam.IndexOf('/')==-1);//không tìm thấy
            //    kq= false;


            //}
            //else
            //{
            //    if (dslam.slot_dslam.IndexOf('.') == -1) ;//không tìm thấy
            //    kq= false;
            //}

            return kq;
        }
        public static void addDslam(DslamModel dslam, int loai)
        {

            if (string.IsNullOrEmpty(dslam.system_id))
            {
                dslam.system_id = chuyendoichu(dslam.name);
            }

            string sql = "INSERT INTO dslam";
            sql += " select nvl((select max(id)+1 from dslam),1),'" + dslam.system_id + "','" + dslam.name + "'," + dslam.dslam_type_id + "," + dslam.quan_huyen_id + "," + dslam.status + ",'" + dslam.slot_dslam + "','" + dslam.ip + "'," + dslam.xa_phuong_id + ",'" + dslam.ttlienhe + "','" + dslam.ghichu + "'," + dslam.todanpho_id + ",'" + dslam.Vlan + "'," + loai + " from dual";
            BaseClass.Lib_ExecuteNonQuery(sql);
            //them truong port khoi tao trong
            switch (int.Parse(dslam.dslam_type_id))
            {
                case 1: //ip
                    xulyport(dslam, 64, 0, 0);
                    //SL 0
                    //PORT0
                    break;
                case 2://mini
                    xulyport(dslam, 32, 12, 1);
                    //SL 1
                    //PORT1
                    break;
                case 3://msan
                    xulyport(dslam, 24, 0, 1);
                    //SL 1
                    //PORT1
                    break;
                case 4://ftth THAM SỐ TRUYỀN VÀO (DS)
                    xulyport_atm(dslam);
                    break;
                case 5://atm huawei CHƯA XÁC ĐỊNH
                    xulyport_atm(dslam);
                    //SL 1
                    //PORT1
                    break;
                case 6://atm huynhdai CHƯA XÁC ĐỊNH
                    xulyport_atm(dslam);
                    break;
                case 7://gpon
                    xulyport_GPON_HW(dslam);
                    //SL 1
                    //PORT1
                    break;
                case 8://gpon
                    xulyport_GPON_zte(dslam);
                    break;
            }
            //thêm tương ứng số port theo dslam (khởi tạo rổng)
        }
        private static void xulyport_GPON_HW(DslamModel dslam)
        {
            //SLOT =0;port  chay theo nguoi dung
            //vpi chay 1-64
            //vci=11
            int cong = 0;

            int num = 0;
            string[] ds_port = dslam.slot_dslam.Trim().Split('.');
            string _sql = "";
            //if (xuatphat == 1)
            //{
            //    p = p + 1;
            //}
            for (int i = 0; i < ds_port.Length; i++)
            {

                if (int.TryParse(ds_port[i], out num))
                {
                    int a = int.Parse(ds_port[i]);

                    for (int j = 0; j < 64; j++)
                    {
                        int tam = 0;
                        cong++;
                        string sql = "INSERT INTO dslam_port";
                        tam = j + 1;
                        sql += " select nvl((select max(id)+1 from dslam_port),1),'" + dslam.system_id + "','0','0','0','" + a + "','" + tam + "','11','','','','','','','','','','','','','','',0," + cong + ",'' from dual";
                        BaseClass.Lib_ExecuteNonQuery(sql);
                    }

                }
            }
        }
        private static void xulyport_GPON_zte(DslamModel dslam)
        {
            //SLOT =0;port  chay theo nguoi dung
            //vpi chay 1-64
            //vci=11
            int cong = 0;

            int num = 0;
            string[] ds_port = dslam.slot_dslam.Trim().Split('.');
            string _sql = "";
            //if (xuatphat == 1)
            //{
            //    p = p + 1;
            //}
            for (int i = 0; i < ds_port.Length; i++)
            {

                if (int.TryParse(ds_port[i], out num))
                {
                    int a = int.Parse(ds_port[i]);

                    for (int j = 0; j < 64; j++)
                    {
                        int tam = 0;
                        cong++;
                        string sql = "INSERT INTO dslam_port";
                        tam = j + 1;
                        sql += " select nvl((select max(id)+1 from dslam_port),1),'" + dslam.system_id + "','1','1','1','" + a + "','" + tam + "','11','','','','','','','','','','','','','','',0," + cong + ",'' from dual";
                        BaseClass.Lib_ExecuteNonQuery(sql);
                    }

                }
            }
        }
        public static void xulyport_atm(DslamModel dslam)
        {
            //2/3/46/1-32
            string[] ds_port = dslam.slot_dslam.Trim().Split('/');
            //SLOT=4:-:PORT=2:-:VPI=27:-:VCI=257
            string[] ds_port1 = ds_port[3].Trim().Split('-');
            int xuatphat = int.Parse(ds_port1[0]);
            int ketthuc = int.Parse(ds_port1[1]);

            string _sql = "";
            int cong = 0;
            for (int i = xuatphat; i <= ketthuc; i++)
            {
                cong++;
                _sql = "INSERT INTO dslam_port";
                _sql += " select nvl((select max(id)+1 from dslam_port),1),'" + chuyendoichu(dslam.name) + "','','','" + ds_port[0] + "','" + ds_port[1] + "','" + ds_port[2] + "','" + i + "','','','','','','','','','','','','','','',0," + cong + ",'' from dual";
                BaseClass.Lib_ExecuteNonQuery(_sql);
            }

        }
        private static void xulyport(DslamModel dslam, int p, int quang, int xuatphat)
        {

            int cong = 0;

            int num = 0;
            string[] ds_port = dslam.slot_dslam.Trim().Split('.');
            string _sql = "";
            if (xuatphat == 1)
            {
                p = p + 1;
            }
            for (int i = 0; i < ds_port.Length; i++)
            {

                if (int.TryParse(ds_port[i], out num))
                {
                    int a = int.Parse(ds_port[i]);

                    for (int j = xuatphat; j < p; j++)
                    {
                        //_sql = "INSERT INTO dslam_port (id,system_id,slot,port,status,rackid,selfid,vpi,vci) VALUES ("+j+",'" + dslam.system_id + "','" + a + "','" + j + "','0','0','0','0','32') ";

                        cong++;
                        string sql = "INSERT INTO dslam_port";
                        sql += " select nvl((select max(id)+1 from dslam_port),1),'" + dslam.system_id + "','0','0','" + a + "','" + j + "','0','32','','','','','','','','','','','','','','',0," + cong + ",'' from dual";
                        BaseClass.Lib_ExecuteNonQuery(sql);
                    }

                }
                //quang chưa dùng
                //else
                //{
                //    int b = int.Parse(ds_port[i].Substring(0, 1));
                //    for (int j = 0; j < quang; j++)
                //    {
                //        _sql = "INSERT INTO dslam_port (system_id,slot,port) VALUES ('" + dslam.system_id + "','" + b + "','" + j + "') ";
                //        BaseClass.Lib_ExecuteNonQuery(_sql);
                //    }
                //}
            }
        }
        public void updateDslam(DslamModel dslam)
        {
            DslamModel dslam_ = DslamModel.getDslam(1).Find(delegate(DslamModel s) { return Convert.ToInt32(s.id) == int.Parse(dslam.id); });

            XuLyUpdate(dslam, dslam_);
            //string sql = "UPDATE dslam SET  system_id='" + dslam.system_id + "', name='" + dslam.name + "',  dslam_type_id=" + dslam.dslam_type_id + ",quan_huyen_id=" + dslam.quan_huyen_id + ", status=" + dslam.status + " where id='" +dslam.id + "'";
            //BaseClass.Lib_ExecuteNonQuery(sql);
        }
        public static int checkExist(DslamModel dslam)
        {
            string sql = "SELECT * FROM dslam WHERE system_id='" + dslam.system_id + "'";
            return BaseClass.Lib_CheckExist(sql);
        }
        public int checkporttrong(int sys)
        {
            string sql = "SELECT a.id, a.system_id, b.id  FROM dslam a,dslam_port b  where a.system_id=b.system_id and b.status=1 and a.id=" + sys + "";
            int a = BaseClass.Lib_CheckExist(sql);
            return a;
        }
        private static void XuLyUpdate(DslamModel dslam, DslamModel dslam_)
        {
            //            quy trình
            //kiểm tra xem slot người dùng mới nhập vào có thay đổi không
            //so sánh với slot củ xem thêm slot nào và bỏ slot nào
            //nếu slot nhập vào có thêm card thì sẻ tiến hành thêm slot/port cho dslam này
            //nếu slot nhập vào thiếu card thì kiểm tra xem trên card đó có cổng nào sử dụng không
            //-nếu có thì không cho xoá card để đảm bảo toàn vẹn dữ liệu
            //-nếu không thì xoá card
            //---trong trường hợp xoá nhiều card cùng lúc thì có card xoá được card không
            //---nên sau khi sữa admin cần xem lại thông số slot,
            //---nếu còn slot đó thì ko xoá được


            int slot;
            int xuatphat;

            switch (int.Parse(dslam.dslam_type_id))
            {
                case 1: //ip
                    XuLyUpdate7thamso(dslam, dslam_, 64, 0);
                    break;
                case 2://mini
                    XuLyUpdate7thamso(dslam, dslam_, 32, 1);
                    break;
                case 3://msan
                    XuLyUpdate7thamso(dslam, dslam_, 48, 1);
                    break;
                case 4://ftth THAM SỐ TRUYỀN VÀO (DS)
                    //xulyport(dslam, 0, 12, 0);
                    XuLyUpdate4thamso(dslam, dslam_);
                    break;
                case 5://atm huawei CHƯA XÁC ĐỊNH
                    XuLyUpdate4thamso(dslam, dslam_);
                    //SL 1
                    //PORT1
                    break;
                case 6://atm huynhdai CHƯA XÁC ĐỊNH
                    XuLyUpdate4thamso(dslam, dslam_);
                    break;

            }

        }
        private static void XuLyUpdate7thamso(DslamModel dslam, DslamModel dslam_, int slot, int xuatphat)
        {
            string[] mcu = dslam_.slot_dslam.Split('.');
            string[] mmoi = dslam.slot_dslam.Split('.');
            List<string> thieu = new List<string>();
            List<string> thua = new List<string>();


            if (dslam_.slot_dslam != dslam.slot_dslam)
            {
                //thieu
                for (int i = 0; i < mcu.Length; i++)
                {
                    if (!kiemtraport_thua_thieu(mcu[i], mmoi))
                        thieu.Add(mcu[i]);
                }
                //thua
                for (int i = 0; i < mmoi.Length; i++)
                {
                    if (!kiemtraport_thua_thieu(mmoi[i], mcu))
                        thua.Add(mmoi[i]);
                }
            }

            //xu ly voi card them moi
            int num = 0;
            int cong = 0;
            foreach (var item in thieu)
            {
                //kiem tra card rong
                if (int.TryParse(item, out num))//kiem tra la so
                {
                    if (checkExistcard(int.Parse(item), dslam) > 0)//ko rong
                    {
                        dslam.slot_dslam += "." + item;

                    }
                    else
                    {
                        //xoa
                        string sql = "DELETE from dslam_port a where a.system_id = '" + dslam.system_id + "' and a.slot='" + item + "'";
                        BaseClass.Lib_ExecuteNonQuery(sql);
                    }
                }

            }
            //xu ly voi car them moi
            
            foreach (var item in thua)
            {


                if (int.TryParse(item, out num))//kiem tra la so
                {
                    
                    int a = int.Parse(item);
                    cong = BaseClass.doicong(a, int.Parse(dslam.dslam_type_id));
                    if (xuatphat == 1)
                    {
                        slot = slot + 1;
                    }
                    for (int j = xuatphat; j < slot; j++)
                    {
                        cong++;
                        string sql = "INSERT INTO dslam_port";
                        sql += " select nvl((select max(id)+1 from dslam_port),1),'" + dslam.system_id + "','0','0','" + a + "','" + j + "','0','32','','','','','','','','','','','','','','',0," + cong + ",'' from dual";
                        BaseClass.Lib_ExecuteNonQuery(sql);
                    }

                }

            }
            //up datete lại dslam

            string sql_ = "UPDATE dslam a SET a.name='" + dslam.name + "',a.dslam_type_id=" + dslam.dslam_type_id + ",a.quan_huyen_id=" + dslam.quan_huyen_id + ",a.status=" + dslam.status + ",a.slot_dslam='" + dslam.slot_dslam + "',a.ip='" + dslam.ip + "',a.xa_phuong_id=" + dslam.xa_phuong_id + ",a.ttlienhe='" + dslam.ttlienhe + "',a.ghichu='" + dslam.ghichu + "',a.todanpho_id=" + dslam.todanpho_id + ",a.vlan='" + dslam.Vlan + "' where a.id=" + dslam.id;

            BaseClass.Lib_ExecuteNonQuery(sql_);
        }
        private static void XuLyUpdate4thamso(DslamModel dslam, DslamModel dslam_cu)
        {
            string sql = "delete  FROM dslam_port a where a.system_id='" + dslam_cu.system_id + "'";
            BaseClass.Lib_ExecuteNonQuery(sql);
            xulyport_atm(dslam);
            string sql_ = "UPDATE dslam a SET a.name='" + dslam.name + "',a.dslam_type_id=" + dslam.dslam_type_id + ",a.quan_huyen_id=" + dslam.quan_huyen_id + ",a.status=" + dslam.status + ",a.slot_dslam='" + dslam.slot_dslam + "',a.ip='" + dslam.ip + "',a.xa_phuong_id=" + dslam.xa_phuong_id + ",a.ttlienhe='" + dslam.ttlienhe + "',a.ghichu='" + dslam.ghichu + "',a.todanpho_id=" + dslam.todanpho_id + " where a.id=" + dslam.id;

            BaseClass.Lib_ExecuteNonQuery(sql_);
        }
        public static int checkExistcard(int slot, DslamModel dslam)
        {
            string sql = "SELECT *  FROM dslam_port a  where a.STATUS='1' and a.slot='" + slot + "' and a.system_id = '" + dslam.system_id + "'";
            return BaseClass.Lib_CheckExist(sql);
        }
        private static bool kiemtraport_thua_thieu(string p, string[] mang)
        {
            for (int i = 0; i < mang.Length; i++)
            {
                if (p == mang[i])
                {
                    return true;
                }
            }
            return false;
        }
        public List<SelectListItem> getkhuvucJson(string quan_huyen_id)
        {
            List<SelectListItem> list = new List<SelectListItem>();
            if (Convert.ToInt32(quan_huyen_id) >= 0)
            {
                string sql = "select ten_xp,xa_phuong_id from xa_phuong a where a.quan_huyen_id=" + int.Parse(quan_huyen_id);
                var odr = BaseClass.Lib_GetDataReader(sql);
                foreach (DataRow item in odr.Rows)
                {
                    list.Add(new SelectListItem { Text = item[0].ToString(), Value = item[1].ToString() });

                }
            }
            return list;
        }
        public void delete(int id)
        {
            string sql = "DELETE FROM dslam WHERE id=" + id + "";
            BaseClass.Lib_ExecuteNonQuery(sql);
            //string _sql = "DELETE FROM dslam_port WHERE SYSTEM_ID='" + id + "'";
            //BaseClass.Lib_ExecuteNonQuery(_sql);
        }
        public List<SelectListItem> getToDanPhoJson(string khuvuc_id)
        {
            List<SelectListItem> list = new List<SelectListItem>();
            if (Convert.ToInt32(khuvuc_id) >= 0)
            {
                string sql = "select ten_xp,xa_phuong_id from xa_phuong a where a.quan_huyen_id=" + int.Parse(quan_huyen_id);
                var odr = BaseClass.Lib_GetDataReader(sql);
                foreach (DataRow item in odr.Rows)
                {
                    list.Add(new SelectListItem { Text = item[0].ToString(), Value = item[1].ToString() });

                }
            }
            return list;
        }
        public static string chuyendoichu(string text)
        {

            for (int i = 32; i < 48; i++)
            {

                text = text.Replace(((char)i).ToString(), " ");

            }

            text = text.Replace("-", ".");

            text = text.Replace(" ", ".");

            text = text.Replace(",", ".");

            text = text.Replace(";", ".");

            text = text.Replace(":", ".");



            Regex regex = new Regex(@"\p{IsCombiningDiacriticalMarks}+");



            string strFormD = text.Normalize(System.Text.NormalizationForm.FormD);

            return regex.Replace(strFormD, String.Empty).Replace('\u0111', 'd').Replace('\u0110', 'D');

        }
        //getaccJson
       
        //////////////////////////////////////////////////////////////////////////////////////////////////
        public void updateDungluong(List<DslamPort.Models.Dslam_API_Class.Dslam_Obj> Dslam_Obj, string system_id)
        {
            string sql = "";
            int num;
            string dung_luong = "";
            foreach (var item in Dslam_Obj)
            {
                if (!int.TryParse(item.Dung_luong, out num))
                    dung_luong = item.Dung_luong;
                else
                    dung_luong = DslamPort.Controllers.DslamPortController.decode_DungluongIp(item.Dung_luong);
                sql = "update dslam_port set dung_luong='" + dung_luong + "' where system_id='" + system_id + "' and slot='" + item.Slot + "' and port='" + item.Port + "'";
                BaseClass.Lib_ExecuteNonQuery(sql);
            }

        }
        //////////////////////////////////////////////////////////////////////////
        public static bool addDslam(DslamModel dslam, HttpPostedFileBase file, int loai)
        {

            try
            {
                if (string.IsNullOrEmpty(dslam.system_id))
                {
                    dslam.system_id = chuyendoichu(dslam.name);
                }

                string sql = "INSERT INTO dslam";
                sql += " select nvl((select max(id)+1 from dslam),1),'" + dslam.system_id + "','" + dslam.name + "'," + dslam.dslam_type_id + "," + dslam.quan_huyen_id + "," + dslam.status + ",'" + dslam.slot_dslam + "','" + dslam.ip + "'," + dslam.xa_phuong_id + ",'" + dslam.ttlienhe + "','" + dslam.ghichu + "'," + dslam.todanpho_id + ",'" + dslam.Vlan + "'," + loai + " from dual";
                BaseClass.Lib_ExecuteNonQuery(sql);
                DataSet ds = BaseClass.Xl_File(file);
                //them port
                DataTable dt = ds.Tables[0];
                string SLOT;
                string PORT;
                string VPI;
                string VCI;
                string SYSTEMID;
                string caulenh;
                string cong;
                int num = 0;
                foreach (DataRow row in dt.Rows)
                {
                    cong = row[0].ToString();
                    
                    if (int.TryParse(cong, out num))
                    {
                        string s1 = row[1].ToString();
                        try
                        {
                            string[] s11 = s1.Trim().Split('/');
                            SLOT = s11[0];
                            PORT = s11[1];
                            string s2 = row[2].ToString();
                            string[] s12 = s2.Trim().Split('/');
                            VPI = s12[0];
                            VCI = s12[1];
                        }
                        catch (System.Exception ex)
                        {
                            SLOT = null;
                            PORT = null;
                            VPI = null;
                            VCI = null;
                        }
                        caulenh = "INSERT INTO dslam_port";
                        caulenh += " select nvl((select max(id)+1 from dslam_port),1),'" + chuyendoichu(dslam.name) + "','','','" + SLOT + "','" + PORT + "','" + VPI + "','" + VCI + "','','','','','','','','','','','','','','',0," + cong + ",'' from dual";
                        BaseClass.Lib_ExecuteNonQuery(caulenh);
                    }
                }
                return true;
            }
            catch
            {
                return false;
            }
        }
        public void updateDslam(DslamModel dslam, HttpPostedFileBase file, int loai)
        {
            DslamModel dslam_ = DslamModel.getDslam(2).Find(delegate(DslamModel s) { return Convert.ToInt32(s.id) == int.Parse(dslam.id); });
            if (file != null)
            {
                XuLyUpdate(dslam, file);
            }
            string sql = "UPDATE dslam SET  system_id='" + dslam.system_id + "', name='" + dslam.name + "',  dslam_type_id=" + dslam.dslam_type_id + ",quan_huyen_id=" + dslam.quan_huyen_id + ", status=" + dslam.status + ",ip='" + dslam.ip + "',xa_phuong_id=" + dslam.xa_phuong_id + ",ttlienhe='" + dslam.ttlienhe + "',ghichu='" + dslam.ghichu + "'  where id='" + dslam.id + "'";
            BaseClass.Lib_ExecuteNonQuery(sql);

        }
        private static void XuLyUpdate(DslamModel dslam, HttpPostedFileBase file)
        {
            try
            {
                if (string.IsNullOrEmpty(dslam.system_id))
                {
                    dslam.system_id = chuyendoichu(dslam.name);
                }


                DataSet ds = BaseClass.Xl_File(file);
                //them port
                DataTable dt = ds.Tables[0];
                string SLOT;
                string PORT;
                string VPI;
                string VCI;
                string SYSTEMID;
                string caulenh;
                string cong;
                int num = 0;
                foreach (DataRow row in dt.Rows)
                {
                    cong = row[0].ToString();

                    if (int.TryParse(cong, out num))
                    {
                        string s1 = row[1].ToString();
                        string[] s11 = s1.Trim().Split('/');
                        SLOT = s11[0];
                        PORT = s11[1];
                        string s2 = row[2].ToString();
                        string[] s12 = s2.Trim().Split('/');
                        VPI = s12[0];
                        VCI = s12[1];
                        caulenh = "update dslam_port a set a.port='" + PORT + "',a.slot='" + SLOT + "',a.vpi='" + VPI + "',a.vci='" + VCI + "' where a.system_id='" + dslam.system_id + "' and a.cong=" + cong + "";
                        //caulenh += " select nvl((select max(id)+1 from dslam_port),1),'" + chuyendoichu(dslam.name) + "','','','" + SLOT + "','" + PORT + "','" + VPI + "','" + VCI + "','','','','','','','','','','','','','','',0," + cong + " from dual";
                        BaseClass.Lib_ExecuteNonQuery(caulenh);
                    }
                }

            }
            catch
            {

            }

        }


    }


}
